package ipdesk.model.user.action;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable;

import com.opensymphony.xwork2.validator.annotations.*;

import org.apache.struts2.config.Namespace;
import org.apache.struts2.config.Result;
import org.apache.struts2.config.Results;

import org.apache.struts2.views.tiles.TilesResult;

import ecg.itf.dao.ECGDao;
import ecg.util.SqlMapLocator;
import ipdesk.model.user.dao.UserDao;
import ipdesk.model.user.bean.UserBean;

//@Namespace(value="/user") // 네임스페이스로 사용할 경로 설정.

// 성공시 이동할 리절트 페이지와 validation에 통과하지 못했을때 이동할 페이지를 설정. 여기서는 Tiles를 이용함.
/*
@Results
({
	@Result(name=ActionSupport.SUCCESS, value="user_reg_complete", type=TilesResult.class),
	@Result(name=ActionSupport.INPUT, value="user_reg_form", type=TilesResult.class),
	@Result(name=ActionSupport.ERROR, value="user_reg_error", type=TilesResult.class)
	
})
*/
// Validation 설정
//@Validations
public class UserRegAction extends ActionSupport implements Preparable, ModelDriven<UserBean>
{
	private UserBean userBean;
	
	/*
	// 해당 필드에 대한 Validation 설정.
	@Validations
	(
			requiredStrings = 
			{
					@RequiredStringValidator(type = ValidatorType.FIELD, fieldName = "userEmail1", message = "email 아이디를 입력하세요"),
					@RequiredStringValidator(type = ValidatorType.FIELD, fieldName = "userEmail2", message = "email 도메인을 입력하세요"),
					@RequiredStringValidator(type = ValidatorType.FIELD, fieldName = "userName", message = "사용자 이름을 입력하세요"),
					@RequiredStringValidator(type = ValidatorType.FIELD, fieldName = "userPassword1", message = "비밀번호를 입력하세요"),
					@RequiredStringValidator(type = ValidatorType.FIELD, fieldName = "userPassword2", message = "비밀번호 확인을 입력하세요"),
					@RequiredStringValidator(type = ValidatorType.FIELD, fieldName = "phone2", message = "전화번호 가운데자리를 입력하세요"),
					@RequiredStringValidator(type = ValidatorType.FIELD, fieldName = "phone3", message = "전화번호 끝자리를 입력하세요")
			}
	)
	*/
	@Override
	public String execute() throws Exception
	{
			
		// 폼에서 입력받은 이메일로 DB에서 조회를 해서 count() 값이 0이라면 데이터를 insert한다.
		int email_result_count = UserDao.getInstance().selectCount(userBean);
		
		//System.out.println(email_result_count);
		
		SqlMapClient sqlMapper = SqlMapLocator.getMapper();
		try{
			sqlMapper.startTransaction();
		
			if(email_result_count <= 0)
			{
				UserDao.getInstance().insertData(userBean);
				
				sqlMapper.commitTransaction();
				return SUCCESS;
			}		
		}finally{
			sqlMapper.endTransaction();
		}
		return "duplicate";
	}
	
	
	public void prepare() throws Exception
	{
		userBean = new UserBean();
	}
	
	public UserBean getModel()
	{
		return userBean;
	}
}
